feat: Support Sub-agent Escalation event in Parallel Agent#612
feat: Support Sub-agent Escalation event in Parallel Agent#612jinnigu wants to merge 1 commit intogoogle:mainfrom
Conversation
Summary of ChangesHello @jinnigu, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request addresses a critical limitation in the Highlights
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request correctly implements the short-circuiting logic for escalation events in ParallelAgent by using the RxJava takeUntil operator. The accompanying new test, ParallelAgentEscalationTest, effectively validates this new behavior. However, I've identified a critical compilation issue in the test code due to a missing builder method, and a couple of medium-severity suggestions to improve code clarity and robustness in the test implementation.
core/src/test/java/com/google/adk/agents/ParallelAgentEscalationTest.java
Show resolved
Hide resolved
core/src/test/java/com/google/adk/agents/ParallelAgentEscalationTest.java
Outdated
Show resolved
Hide resolved
core/src/test/java/com/google/adk/agents/ParallelAgentEscalationTest.java
Outdated
Show resolved
Hide resolved
52e282e to
4677aba
Compare
13645cf to
7fcf524
Compare
| } | ||
| } | ||
|
|
||
| static class SlowAgent extends BaseAgent { |
There was a problem hiding this comment.
maybe we could merge the Escalating and Slow agents into a single TestAgent class, I feel like the code only differs in how the Event is constructed in the runAsyncImpl - this could be specified via constructor params for example, wdyt?
There was a problem hiding this comment.
Yes, merged into a single TestAgent class
| public void runAsync_escalationEvent_shortCircuitsOtherAgents() { | ||
| TestScheduler testScheduler = new TestScheduler(); | ||
|
|
||
| EscalatingAgent agent1 = new EscalatingAgent("agent1", 100, testScheduler); |
There was a problem hiding this comment.
can we add another SlowAgent here (which would actually be a fast one) with a delay of say 50 (so that it's completed before the escalation happens) - I wanted to make sure that the EscalatingAgent escalation still preserves the events that happend prior to it completing
There was a problem hiding this comment.
Added a third agent to complete before escalation.
7fcf524 to
88c8b0e
Compare
Fixes #561
Problem
ADK ParallelAgent did not support short-circuiting concurrent requests when a sub-agent sent a termination signal via an escalation event.
Changes
Modified ParallelAgent.java to use .takeUntil() on the merged event stream, listening for events with the escalate flag.
Added ParallelAgentEscalationTest.java to verify the escalation event triggers termination of other sub-agents.
Testing